﻿Imports lbGlobalcom
Public Class fPrepacks
    Dim cProPadre As lbGlobalcom.cProducto
    Dim cProHijo As lbGlobalcom.cProducto
    Dim daTipoSubProd As lbGlobalcom.dsGlobalTableAdapters.GLO_DATOSTABLASTableAdapter
    Dim daTipoPPack As lbGlobalcom.dsInventariosTableAdapters.INV_TIPOSPREPACKSTableAdapter
    Dim drPadre As lbGlobalcom.dsMovimiento.MOV_DESCRIPCIONDETRow()
    Dim drHijo() As lbGlobalcom.dsMovimiento.MOV_DESCRIPCIONDETRow
    Dim daInveDtalle As lbGlobalcom.dsInventariosTableAdapters.INV_DETALLETableAdapter
    Dim daPrepack As lbGlobalcom.dsInventariosTableAdapters.INV_PREPACKTableAdapter
    Dim dtPadreDtalle As New dsMovimiento.MOV_DESCRIPCIONDETDataTable
    Dim dtHijoDtalle As New dsMovimiento.MOV_DESCRIPCIONDETDataTable
    'Private Sub btnBuscaProductosPadre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    '    Try
    '        Dim fLProd As New fListaProductos
    '        'fLProd.ListaPrecios = "001"
    '        If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
    '            'dgvMovimiento.Rows(dgvMovimiento.CurrentRow.Index).Cells(1).Value = fLProd.idArticulo
    '            txtProductoPadre.Text = fLProd.idArticulo
    '            cProPadre = New cProducto(fLProd.idArticulo)
    '            actualizarProductoPadre()
    '            InicializaConsecHijo()
    '            txtProductoPadre.Enabled = False
    '            btnBuscaProductosPadre.Enabled = False
    '            txtNumRegs.Focus()
    '        End If
    '    Catch ex As Exception
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '        MessageBox.Show(ex.Message)
    '    End Try
    'End Sub

    Public Sub cargarTipoPrepack(ByVal idPrepack As Integer)
        Try
            If idPrepack <> 0 Then
                Dim rowTipoPre As lbGlobalcom.dsInventarios.INV_TIPOSPREPACKSRow = daTipoPPack.GetDataByIdPreack(idPrepack).Rows(0)
                txtImei.Text = rowTipoPre("CANTIMEI")
                txtIccid.Text = rowTipoPre("CANTICCID")
                txtContenidoPadre.Text = rowTipoPre("CANTIMEI")
                txtContenidoHijo.Text = rowTipoPre("CANTICCID")
            Else
                txtImei.Text = 0
                txtIccid.Text = 0
                txtConsecutivoPadre.Text = 0
                txtContenidoPadre.Text = 0
                txtIngresadoPadre.Text = 0
                txtConsecutivoHijo.Text = 0
                txtContenidoHijo.Text = 0
                txtIngresadoHijo.Text = 0
                txtNumeroRegistroPadre.ReadOnly = True
                txtNumeroRegistroHijo.ReadOnly = True
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub



    Public Sub actualizarProductoPadre()
        Try
            txtDescripcionPadre.Text = cProPadre.Descripcion
            'txtContenido.Text = cPro.CantidadSubProd
            'txtTipoSubProd.Text = cProPadre.TipoSubProd
            'txtContenidoPadre.Text = cProPadre.CantidadSubProd
            'txtContenidoHijo.Text = cProPadre.CantidadSubProd
            txtIngresadoPadre.Text = "0"
            txtIngresadoHijo.Text = "0"
            'txtIngresadoHijo.Text = "0"
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    'Public Sub actualizarProductoHijo()
    '    Try
    '        txtDescripcionHijo.Text = cProHijo.Descripcion
    '        'txtContenido.Text = cPro.CantidadSubProd
    '        'txtTipoSubProd.Text = cProPadre.TipoSubProd
    '        'txtIngresadoPadre.Text = "0"
    '        txtIngresadoHijo.Text = "0"
    '    Catch ex As Exception
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '        MessageBox.Show(ex.Message)
    '    End Try
    'End Sub

    Private Sub fPrepacks_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            daTipoSubProd = New lbGlobalcom.dsGlobalTableAdapters.GLO_DATOSTABLASTableAdapter
            daTipoSubProd.FillByIdGrupo(DsGlobalTipoSubProd.GLO_DATOSTABLAS, "sp")
            daTipoPPack = New lbGlobalcom.dsInventariosTableAdapters.INV_TIPOSPREPACKSTableAdapter
            'daTipoPPack.Fill(DsInventarios.INV_TIPOSPREPACKS)
            DsInventarios.INV_TIPOSPREPACKS.Merge(cGeneral.GetTiposPrepacks())
            cbTipoPrepack.SelectedValue = 0
            cargarTipoPrepack(cbTipoPrepack.SelectedValue)
            daInveDtalle = New lbGlobalcom.dsInventariosTableAdapters.INV_DETALLETableAdapter
            daPrepack = New lbGlobalcom.dsInventariosTableAdapters.INV_PREPACKTableAdapter
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Function GetConsecActualHijo() As Integer
        If dgvHijos.RowCount = 0 Then
            Return 1
        Else
            Return dgvHijos.Rows(dgvHijos.RowCount - 1).Cells("NUMEROPRODUCTO1").Value
        End If
    End Function
    Private Sub ValidarRegistroDescDetalleHijo()
        Dim NFilas As Integer = GetNumeroFilasDescripDetalleHijo()
        'If Not dgvPadres.CurrentRow.IsNewRow AndAlso dgvPadres.CurrentRow.Cells("CANTIDAD").Value IsNot DBNull.Value Then
        'If cProHijo.CantidadSubProd * dgvPadres.CurrentRow.Cells("CANTIDAD").Value > NFilas Then
        If txtIccid.Text * txtCantidadPrepack.Text > NFilas Then
            txtNumeroRegistroHijo.ReadOnly = False
        Else
            txtNumeroRegistroHijo.ReadOnly = True
        End If
        'End If
    End Sub

    Private Function GetNumeroFilasDescripDetalleHijo() As Integer
        Dim Nfilas As Integer = 0
        For Each drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow In dtHijoDtalle.Rows
            If drDescDet.RowState <> DataRowState.Deleted Then _
                Nfilas += 1
        Next
        Return Nfilas
    End Function

    Private Function verificaNumRegPadre(ByVal numeroRegistro As String) As Integer
        Dim existe As Integer = 0
        For Each drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow In dtPadreDtalle.Rows
            If drDescDet("NUMEROREGISTRO") = numeroRegistro Then _
                existe = 1
        Next
        Return existe
    End Function

    Private Function verificaNumRegHijo(ByVal numeroRegistro As String) As Integer
        Dim existe As Integer = 0
        For Each drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow In dtHijoDtalle.Rows
            If drDescDet("NUMEROREGISTRO") = numeroRegistro Then _
                existe = 1
        Next
        Return existe
    End Function

    Private Sub txtNumeroRegistroHijo_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtNumeroRegistroHijo.Validating
        Try
            If txtNumeroRegistroHijo.Text.Trim.Length > 0 Then
                If verificaNumRegHijo(txtNumeroRegistroHijo.Text) = 0 Then
                    If daInveDtalle.GetImeiIccidValido(txtNumeroRegistroHijo.Text.Trim) = 1 Then
                        Dim drInveHijo As dsInventarios.INV_DETALLERow = daInveDtalle.GetDataByDatosImeiIccid(txtNumeroRegistroHijo.Text).Rows(0)
                        If daPrepack.GetImeiAndIccidValido(drInveHijo("IDPRODUCTO"), drInveHijo("NUMEROREGISTRO")) = 0 Then
                            'Dim dtRegPadre As dsInventarios.INV_DETALLEDataTable = daInveDtalle.GetDataByPareja(drInvePadre("IDPRODUCTO"), drInvePadre("TIPOSUBPROD"), drInvePadre("PAREJA"), drInvePadre("CONSECUTIVO"))
                            'If dtRegPadre.Count > 0 Then
                            agregarFilaHijo(drInveHijo)
                            'If CType(txtNumRegs.Text, Integer) > 1 Then
                            '    For Each dr In dtRegPadre.Rows
                            '        If txtConsecutivoPadre.Text <> txtNumRegs.Text Then
                            '            If drInvePadre("NUMEROREGISTRO") <> dr("NUMEROREGISTRO") Then
                            '                agregarFilaHijo(dr)
                            '            End If
                            '        End If
                            '    Next
                            '    'Dim gPPackMov As New GeneraPrepakDesdeMovimi(drPadre, drHijo)
                            'End If

                            'Else
                            '    MessageBox.Show("El equipo no maneja varios Iccids", "Iccids", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                            'End If
                        Else
                            MessageBox.Show("Iccid ya fue asignado a un Prepack", "Iccid", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        End If
                    Else
                        MessageBox.Show("Iccid no valido", "IccidNoValido", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    End If
                    'Else
                    '   MessageBox.Show("Dato Invalido, no se encontro el Imei", "Invalido", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Else
                    MessageBox.Show("Iccid ya fue Ingresado", "Chequeado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                End If
                txtNumeroRegistroHijo.Text = ""
                txtNumeroRegistroHijo.Focus()
            End If
                ValidarRegistroDescDetalleHijo()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Public Sub agregarFilaHijo(ByVal dr As dsInventarios.INV_DETALLERow)
        Dim ConsecAsigna As Integer = GetConsecActualHijo()
        Try
            txtIngresadoHijo.Text += 1
            If txtConsecutivoHijo.Text = txtIccid.Text Then
                ConsecAsigna += 1
                txtConsecutivoHijo.Text = 1
            Else
                txtConsecutivoHijo.Text += 1
            End If
            Dim drHijoDtalle As lbGlobalcom.dsMovimiento.MOV_DESCRIPCIONDETRow = dtHijoDtalle.NewMOV_DESCRIPCIONDETRow
            drHijoDtalle("IDDOCUMENTO") = "PRE"
            drHijoDtalle("NUMERO") = 1
            drHijoDtalle("NUMEROLINEA") = 1
            drHijoDtalle("IDPRODUCTO") = dr("IDPRODUCTO")
            drHijoDtalle("TIPOSUBPROD") = dr("TIPOSUBPROD")
            drHijoDtalle("NUMEROPRODUCTO") = ConsecAsigna
            drHijoDtalle("NUMEROREGISTRO") = dr("NUMEROREGISTRO")
            drHijoDtalle("COSTO") = dr("COSTO")
            dtHijoDtalle.AddMOV_DESCRIPCIONDETRow(drHijoDtalle)
            dgvHijos.DataSource = dtHijoDtalle
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Function GetConsecActualPadre() As Integer
        If dgvPadres.RowCount = 0 Then
            Return 1
        Else
            Return dgvPadres.Rows(dgvPadres.RowCount - 1).Cells("NUMEROPRODUCTO").Value
        End If
    End Function
    Private Sub ValidarRegistroDescDetallePadre()
        Dim NFilas As Integer = GetNumeroFilasDescripDetallePadre()
        'If cProPadre.CantidadSubProd * dgvPadres.CurrentRow.Cells("CANTIDAD").Value > NFilas Then
        If txtImei.Text * txtCantidadPrepack.Text > NFilas Then
            txtNumeroRegistroPadre.ReadOnly = False
        Else
            txtNumeroRegistroPadre.ReadOnly = True
            txtNumeroRegistroHijo.Focus()
        End If
    End Sub

    Private Function GetNumeroFilasDescripDetallePadre() As Integer
        Dim Nfilas As Integer = 0
        For Each drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow In dtPadreDtalle.Rows
            If drDescDet.RowState <> DataRowState.Deleted Then _
                Nfilas += 1
        Next
        Return Nfilas
    End Function


    Private Sub InicializaConsecPadre()
        Dim NFilas As Integer = GetNumeroFilasDescripDetallePadre()
        txtIngresadoPadre.Text = NFilas
        If NFilas = 0 Then
            txtConsecutivoPadre.Text = 0
        ElseIf NFilas <= cProPadre.CantidadSubProd Then
            txtConsecutivoPadre.Text = NFilas
        Else
            Dim FilaActual As Integer = NFilas - 1
            Dim Salir = False
            Dim NregCosecIguales As Integer = 0
            Dim nConsec As Integer = dgvPadres.Rows(FilaActual).Cells("NUMEROPRODUCTO").Value
            While Not Salir
                If dgvPadres.Rows(FilaActual).Cells("NUMEROPRODUCTO").Value <> nConsec Or NregCosecIguales = cProPadre.CantidadSubProd Then
                    Salir = True
                Else
                    FilaActual -= 1
                    NregCosecIguales += 1
                End If
            End While
            txtConsecutivoPadre.Text = NregCosecIguales
            'txtConsecutivoHijo.Text = NregCosecIguales
        End If
    End Sub

    Private Sub InicializaConsecHijo()
        Dim NFilas As Integer = GetNumeroFilasDescripDetalleHijo()
        txtIngresadoHijo.Text = NFilas
        If NFilas = 0 Then
            txtConsecutivoHijo.Text = 0
        ElseIf NFilas <= cProPadre.CantidadSubProd Then
            txtConsecutivoHijo.Text = NFilas
        Else
            Dim FilaActual As Integer = NFilas - 1
            Dim Salir = False
            Dim NregCosecIguales As Integer = 0
            Dim nConsec As Integer = dgvHijos.Rows(FilaActual).Cells("NUMEROPRODUCTO1").Value
            While Not Salir
                If dgvHijos.Rows(FilaActual).Cells("NUMEROPRODUCTO1").Value <> nConsec Or NregCosecIguales = cProPadre.CantidadSubProd Then
                    Salir = True
                Else
                    FilaActual -= 1
                    NregCosecIguales += 1
                End If
            End While
            txtConsecutivoHijo.Text = NregCosecIguales
        End If
    End Sub



    Private Sub txtNumeroRegistroPadre_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtNumeroRegistroPadre.Validating
        Try
            If txtNumeroRegistroPadre.Text.Trim.Length > 0 And cProPadre IsNot Nothing Then
                If verificaNumRegPadre(txtNumeroRegistroPadre.Text) = 0 Then
                    If daInveDtalle.GetImeiIccidValido(txtNumeroRegistroPadre.Text.Trim) = 1 Then
                        Dim drInvePadre As dsInventarios.INV_DETALLERow = daInveDtalle.GetDataByDatosImeiIccid(txtNumeroRegistroPadre.Text).Rows(0)
                        If daPrepack.GetImeiAndIccidValido(drInvePadre("IDPRODUCTO"), drInvePadre("NUMEROREGISTRO")) = 0 Then
                            Dim dtRegPadre As dsInventarios.INV_DETALLEDataTable = daInveDtalle.GetDataByPareja(drInvePadre("IDPRODUCTO"), drInvePadre("TIPOSUBPROD"), drInvePadre("PAREJA"), drInvePadre("CONSECUTIVO"))
                            'If dtRegPadre.Count > 0 And CType(txtNumRegs.Text, Integer) <= dtRegPadre.Count Then
                            If dtRegPadre.Count > 0 Then
                                For Each dr In dtRegPadre.Rows
                                    agregarFilaPadre(dr)
                                Next
                            Else
                                MessageBox.Show("El equipo no maneja varios Imeis", "Imeis", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                            End If
                        Else
                            MessageBox.Show("Imei ya fue asignado a un Prepack", "Imei", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        End If
                    Else
                        MessageBox.Show("Imei no valido", "ImeiNoValido", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    End If
                    
                Else
                    MessageBox.Show("Imei ya fue Ingresado", "Chequeado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                End If
                txtNumeroRegistroPadre.Text = ""
                txtNumeroRegistroPadre.Focus()
            End If
            ValidarRegistroDescDetallePadre()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Public Sub agregarFilaPadre(ByVal dr As dsInventarios.INV_DETALLERow)
        Dim ConsecAsigna As Integer = GetConsecActualPadre()
        Try
            txtIngresadoPadre.Text += 1
            If txtConsecutivoPadre.Text = txtContenidoPadre.Text Then
                ConsecAsigna += 1
                txtConsecutivoPadre.Text = 1
            Else
                txtConsecutivoPadre.Text += 1
            End If
            Dim drPadreDtalle As lbGlobalcom.dsMovimiento.MOV_DESCRIPCIONDETRow = dtPadreDtalle.NewMOV_DESCRIPCIONDETRow
            drPadreDtalle("IDDOCUMENTO") = "PRE"
            drPadreDtalle("NUMERO") = 1
            drPadreDtalle("NUMEROLINEA") = 2
            drPadreDtalle("IDPRODUCTO") = dr("IDPRODUCTO")
            drPadreDtalle("TIPOSUBPROD") = dr("TIPOSUBPROD")
            drPadreDtalle("NUMEROPRODUCTO") = ConsecAsigna
            drPadreDtalle("NUMEROREGISTRO") = dr("NUMEROREGISTRO")
            drPadreDtalle("COSTO") = dr("COSTO")
            dtPadreDtalle.AddMOV_DESCRIPCIONDETRow(drPadreDtalle)
            'drPadreDtalle("PAREJA") = dr("PAREJA")
            dgvPadres.DataSource = dtPadreDtalle
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub


    Private Sub btnNuevoPrepack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevoPrepack.Click
        Try
            dtPadreDtalle.Rows.Clear()
            dgvPadres.DataSource = dtPadreDtalle
            dtHijoDtalle.Rows.Clear()
            dgvHijos.DataSource = dtHijoDtalle
            cbTipoPrepack.Enabled = True
            btnBuscaProductosPadre.Enabled = True
            txtProductoPadre.Text = ""
            txtDescripcionPadre.Text = ""
            txtIccid.Text = ""
            txtImei.Text = ""
            txtCantidadPrepack.Text = ""
            txtCantidadPrepack.ReadOnly = False
            cbTipoPrepack.SelectedValue = 0
            cbTipoPrepack.Focus()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBuscaProductosPadre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaProductosPadre.Click
        Try
            Dim fLProd As New fListaProductos
            'fLProd.ListaPrecios = "001"
            If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
                'dgvMovimiento.Rows(dgvMovimiento.CurrentRow.Index).Cells(1).Value = fLProd.idArticulo
                cProPadre = New cProducto(fLProd.idArticulo)
                If cProPadre.CantidadSubProd = CType(txtImei.Text, Integer) Then
                    txtProductoPadre.Text = fLProd.idArticulo
                    actualizarProductoPadre()
                    InicializaConsecPadre()
                    InicializaConsecHijo()
                    ' txtProductoPadre.Enabled = False
                    cbTipoPrepack.Enabled = False
                    btnBuscaProductosPadre.Enabled = False
                    txtNumeroRegistroPadre.ReadOnly = False
                    txtNumeroRegistroHijo.ReadOnly = False
                    'btnBuscaProductosHijo.Focus()
                    'txtNumeroRegistroPadre.Focus()
                    txtCantidadPrepack.Focus()
                Else
                    btnBuscaProductosPadre.Focus()
                    MessageBox.Show("El contenido del equipo no es igual a la cantidad de Imei del Prepack", "Contenido Diferente")
                End If
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    'Private Sub btnBuscaProductosHijo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    '    Try
    '        Dim fLProd As New fListaProductos
    '        'fLProd.ListaPrecios = "001"
    '        If fLProd.ShowDialog = Windows.Forms.DialogResult.OK Then
    '            'dgvMovimiento.Rows(dgvMovimiento.CurrentRow.Index).Cells(1).Value = fLProd.idArticulo

    '            cProHijo = New cProducto(fLProd.idArticulo)
    '            If cProPadre.CantidadSubProd = CType(txtImei.Text, Integer) Then
    '                txtProductoHijo.Text = fLProd.idArticulo
    '                actualizarProductoHijo()
    '                InicializaConsecHijo()
    '                'txtProductoHijo.Enabled = False
    '                btnBuscaProductosHijo.Enabled = False
    '                txtNumeroRegistroPadre.Focus()
    '            Else
    '                btnBuscaProductosHijo.Focus()
    '                MessageBox.Show("El contenido del Producto no es igual a la cantidad de Iccid del Prepack", "Contenido Diferente")
    '            End If
    '        End If
    '    Catch ex As Exception
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '        MessageBox.Show(ex.Message)
    '    End Try
    'End Sub

    'Private Sub txtNumRegs_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtIccid.Validating
    '    Try
    '        If txtIccid.Text.Length > 0 Then
    '            If CType(txtIccid.Text, Integer) > 0 And CType(txtIccid.Text, Integer) <= CType(txtContenidoPadre.Text, Integer) Then
    '                'txtIccid.Enabled = False
    '                txtContenidoHijo.Text = txtIccid.Text
    '                txtNumeroRegistroPadre.Focus()
    '            Else
    '                MessageBox.Show("Cantidad no valida", "Cantidad", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    '                e.Cancel = True
    '            End If
    '        Else
    '            MessageBox.Show("Debe ingresar una cantidad valida", "Vacio", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    '            e.Cancel = True
    '        End If
    '    Catch ex As Exception
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '        MessageBox.Show(ex.Message)
    '    End Try
    'End Sub

    Private Sub btnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        Try
            If dgvPadres.Rows.Count > 0 And dgvHijos.Rows.Count > 0 Then
                Dim gPPackMov As New GeneraPrepakDesdeMovimi(dtPadreDtalle, dtHijoDtalle, txtIccid.Text, cbTipoPrepack.SelectedValue)
                If gPPackMov.validaNumeroProducto() = 1 Then
                    gPPackMov.GeneraPrepackDesdeFormulario()
                    MessageBox.Show("Se Generarón " & (gPPackMov.NumeroPrepacksArmados / CType(txtContenidoHijo.Text, Integer)).ToString & ", Prepacks con exito")
                Else
                    MessageBox.Show("No coinciden los registros en el campo numero producto")
                End If
            Else
                MessageBox.Show("No coinciden los registros en numero o cantidad")
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub cbTipoPrepack_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbTipoPrepack.TextChanged
        Try
            cargarTipoPrepack(cbTipoPrepack.SelectedValue)
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

   
    Private Sub btnBuscarPrepack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscarPrepack.Click
        Try
            Dim fLPrepack As New fListaPrepack
            'fLProd.ListaPrecios = "001"
            If fLPrepack.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim producto As String = fLPrepack.mProducto
                'dgvMovimiento.Rows(dgvMovimiento.CurrentRow.Index).Cells(1).Value = fLProd.idArticulo
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub txtCantidadPrepack_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtCantidadPrepack.Validating
        Try
            If txtCantidadPrepack.Text.Length > 0 Then
                txtCantidadPrepack.ReadOnly = True
                txtNumeroRegistroPadre.Focus()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub borrarImei(ByVal numProd As Integer)
        Try
            Dim j As Integer = 0
            Dim row As dsMovimiento.MOV_DESCRIPCIONDETRow
            row = dtPadreDtalle.Rows(0)
            For i = 0 To (dtPadreDtalle.Rows.Count - 1)
                If dtPadreDtalle.Rows.Count > 0 Then
                    row = dtPadreDtalle.Rows(i - j)
                End If
                If row("NUMEROPRODUCTO") = numProd Then
                    row.Delete()
                    j += 1
                End If
            Next
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub borrarIccid(ByVal numProd As Integer)
        Try
            Dim j As Integer = 0
            Dim row As dsMovimiento.MOV_DESCRIPCIONDETRow
            row = dtHijoDtalle.Rows(0)
            For i = 0 To (dtHijoDtalle.Rows.Count - 1)
                If dtHijoDtalle.Rows.Count > 0 Then
                    row = dtHijoDtalle.Rows(i - j)
                End If
                If row("NUMEROPRODUCTO") = numProd Then
                    row.Delete()
                    j += 1
                End If
            Next
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub RenumerarNumeroProductoPadre()
        Try
            Dim contenido As Integer = 1
            Dim fila As Integer = 1
            For Each drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow In dtPadreDtalle.Rows
                If contenido > CType(txtContenidoPadre.Text, Integer) Then
                    contenido = 1
                    fila += 1
                End If
                contenido += 1
                drDescDet("NUMEROPRODUCTO") = fila
            Next
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub RenumerarNumeroProductoHijo()
        Try
            Dim contenido As Integer = 1
            Dim fila As Integer = 1
            For Each drDescDet As dsMovimiento.MOV_DESCRIPCIONDETRow In dtHijoDtalle.Rows
                If contenido > CType(txtContenidoHijo.Text, Integer) Then
                    contenido = 1
                    fila += 1
                End If
                contenido += 1
                drDescDet("NUMEROPRODUCTO") = fila
            Next
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBorrarPadre_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBorrarPadre.Click
        Dim cPre As New cArmaPrepack(0)
        Try
            If cPre.ExisteEnPrepack(dgvPadres.CurrentRow.Cells("TIPOSUBPROD").Value, dgvPadres.CurrentRow.Cells("NUMEROREGISTRO").Value, True) Then

            End If
            If dgvPadres.Rows.Count > 0 Then
                Dim numProd As Integer = dgvPadres.CurrentRow.Cells("NUMEROPRODUCTO").Value
                Dim fila As Integer = dgvPadres.CurrentRow.Index()
                borrarImei(numProd)
            End If
            RenumerarNumeroProductoPadre()
            ValidarRegistroDescDetallePadre()
            InicializaConsecPadre()
            txtNumeroRegistroPadre.Focus()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub btnBorrarHijo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBorrarHijo.Click
        Try
            If dgvHijos.Rows.Count > 0 Then
                Dim numProd As Integer = dgvHijos.CurrentRow.Cells("NUMEROPRODUCTO1").Value
                Dim fila As Integer = dgvHijos.CurrentRow.Index()
                borrarIccid(numProd)
            End If
            RenumerarNumeroProductoHijo()
            ValidarRegistroDescDetalleHijo()
            InicializaConsecHijo()
            txtNumeroRegistroHijo.Focus()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class